package jly521.lucene.index;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.document.IntPoint;
import org.apache.lucene.document.StoredField;
import org.apache.lucene.index.IndexOptions;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;

import jly521.lucene.ik.IKAnalyzer6x;

public class CreateIndex {

    public static void main(String[] args) {
        Date start = new Date();
        String appNames = "金视杰眼镜,国泰君安君弘lite,快游戏测试072605,快译,八字感情运,博艾产后恢复,佛经大全,旭普叉车,临汾装饰建材,demo12,网约车宝典,一键垃圾分类,情侣头像,5G云市场,理财收益计算器,浦发银行信用卡,金园火锅排档,湖南百人教育,聚龙庄特色美食,一嗨租车,珍爱网,先锋科技,淘小说,漫漫漫画,阿彬车轮饼,福利中心,趣遛,漫画台,淘票票,菜谱大全,么么星座,潮庆装修装饰,动物声音模拟器,及刻出行,东方头条,小田豆浆油条,趣读书刊,lq3,我爱康,欧汇超市,潮汐睡眠,一直播,淘券,垃圾分类大全,马上斗地主,阡陌乐生活,金螳螂家装修,美呗整形,汇率计算器,人狗交流器,明德机器人,旭达卓越学历提升,拼音教学视频,快递单号查询,91阅读,熊猫天天故事,一笔签艺术字,淘集集,微喜鹊,快应用110701,信用卡权益,竺扶兴汽车养护,YSG時尙软装,莲花潮汕美食,雲川装饰装修共享平台,掌中云小说,二维码生成器,面积换算计算器,三生三世 十里桃花,宏亚除四害除甲醛,凌视全屋定制,小娱八斗,附近惠多多,玄星灵机大师,科目一模拟考试练习,英文名大全,吐司工具箱,信成电动车维修,芭比公主动画大全,酷跑球球,小学语文数学英语同步,吉命每日运势,周易测名取名,车主无忧,搜个券,电音跑酷,头条商机,黑洞大乱斗,省点,头像制作,八字合婚,小冰主持人,切壳Now,淘券宝,斗鱼直播,万年历日历,体重记录本,车牌限号查询,道奇装饰装修平台,新浪股票,平行之家,互动百科,欧风翰林别院灯饰,爱问阅读,英语绘本,重庆新零售,简书,讯飞配音,小鸡漫画,个个法律咨询,精品好券,全能扫描王,铃声好听多,,中山装修优万特,盈凯汽车养护,便签记事本,中文书城,微博动漫,2048,鲸云铃声,广州跃广手机店,全球惠卡券,信用卡管家,小娃教育幼儿养育,乐活拓展训练,连尚头条,快问律师,纪念日,潮汐表,狗语翻译器,穿咩,崇文馆阅读,快速问医生,风行视频,梨视频,铃声多多多,六角消除,清水河畔,免费小说大全,明智视力保健,免费小说全集,宝宝树备孕,朴恩家纺床品,好书屋,土巴兔装修,猫语翻译器,心理测试,全真运势,demolq,么么星座,八字精批,腾讯动漫,快看漫画mini,网易新闻,爱回收,知命八字算命,lq3,吉他视频,约会吧,王者荣耀视频,广场舞视频,人猫交流器,CC浏览器,钢号查询,,快递助手,观音灵签抽签,节拍器,减约,诺尔专业代办,分秒律师,航班动态,云米智能家用电器,干洗联盟,铃声大全,米小报,,网易有道词典,艺龙酒店,寻医问药,豫园,财华财经,淘车二手车,周公解梦,八字测算,玩秘,京东,大智贷款计算器,掌阅漫画,快星座,货拉拉,爱看书,创业加盟开店,头脑王者吃鸡,万年历黄历,若欣附近花店,一生财运精批,私厨顺德美食,多阅免费小说,新浪爱问,12123查违章,lq3,广发易淘金lite,宝宝起名,足球专家,动态壁纸,114票务机票火车票,护眼大师预约问诊,房天下,500彩票,hao123,鼎诚生活宝,观音灵签,聚优佳房产中介,天翼账号,口袋导游极速版,生肖运势每天看,腾讯翻译君,光飞影视婚礼策划,百度地图搜搜,违章缴费,明星实力榜,省钱超人,快递100小助手,选股宝,钢材价格,美拍,解套图片识别,葫芦省钱,淘特价,个税计算器,瓜子二手车,智行火车票,忠仕商务通,AcFun热门,河南豫剧视频,企查查,太白万年历,小说阅读吧,倾城之链,三毛游景点讲解,蜂助手,小说大全全免,亲戚关系,流月运势,天天爱看,奔腾,健康平台,游贝信用卡优惠攻略大全,途虎养车,易加油,梵一中山瑜伽,颜值测试,众艾感统,卡榜信用卡,容易贷贷款,丰巢快递柜,AI人脸算命,番茄小说,小学三年级,宝宝巴士儿歌,货色,头文字3D,花地湾中山美食,天气预报早知,辣椒画报,asst微博AI评论小工具,小学四年级,小学六年级,10086,朗思威重庆除甲醛,免费淘小说,小学五年级,美味不用等,换发型相机,佛山康艾汗蒸养生,酷音铃声,折多多,大同装饰家居定制,券妈妈优惠券,拜年神器,1905电影网,实时天气预报,FM电台收音机,微门户,畅途汽车票,宝宝起名大师,晓玲大同私房菜,明星脸打分,心理测试,周公解梦原版,泰腾母婴用品商城,大象记账本,择吉日,一点资讯,美食天下+,晋业支付,中国建材装饰,垃圾分类大师,即阅免费小说,最美证件照制作,三兴汽配,昶浩茶叶批发,爱阅读书,彩妮绝斑绝痘,logo设计,天时预应力波纹管,天天拍车估价,demolq,麦玲玲生肖运程,癫痫治疗36招,蘑菇街,连尚免费读书,二维码扫描,返利搜券,逛哪儿,公平价二手车评估,Base64编码解码工具,记账本,晟秋养生保健,流量话费查询充值,鬼步舞视频,冷知识百科,芸芸故事,lq3,屈臣氏极速版,驾考宝典,口袋铃声,贵州山歌视频,潇湘书院,及刻场景服务,分期计算,实况天气预报,好搭发布专用,周易算命,垃圾分类查询,RPK-B,生命倒计时,RPK-C,新个税计算器,周边生活排行,景区挤不挤,海报制作,美柚-经期孕育助手,乐美图,函之艺全屋定制,玛思灯饰商城,,装神器,铁行汽车票,指南针高级版,可可西里全屋定制,轻松筹,楼司令,超级妈妈工具箱,睡眠白噪音,周公解梦查询,美团智能助理,GDbillS,富盛酒业,戏曲大全,房贷计算器,小说排行榜,八字算命大师,星座天天看,爱问共享资料,test1,发布专用,lq3,书香免费小说,人民快报,儿童舞蹈教学视频,智慧生活,test2,保罗酱酒文化,惠刷卡,翔善社团,亮满灯饰,享听听书,怡阅小说,寻医宝,顺泽电脑,手机网络测速,懂车帝,卡牛聚优惠,腾阁驿馆,大姨妈来了,测试带卡片,必看免费小说,demo,找片儿,测试,勤奋家政平台,demoandcard,金蒂美美容养生,时光时钟,国美商城,口碑商圈,快应用测试082001,三字经,心理测试大全,n,语音计算器,快应用混合卡片测试,demo,点众阅读,美折购,微盟贷款计算器,起名取名大全,生活服务,爱美问问,充值服务,模拟钢琴,喜推,吉命八字合婚,lq3,驾校一点通,钢材计算器,框架测试卡片DEMO,斗图表情包,海参,绘佳招募,每日运势,在线公积金,每日一嗒,平安服务,幸运签,好看,AU游乐场,长度换算计算器,智能助理卡片测试,高平汽车服务,demolw1,demolw5,中信银行信用卡,山东快报,demo,网上厨房,搜狗百科,51办卡,二维码制作,demolwwa,手机黄页,山西李孟果树苗木,携程旅行mini,云缴费,房贷计算器2019,58同城,书市,问卷网,风水罗盘,生命倒计时,老黄历,demolwa,漫读小说极速版,小沃学堂,lq3,小米测试,春运抢票,小米测试,lq3,乐听头条,禾连资讯助手,宝宝巴士故事,testlwb,云犀天气,鑫旭达门窗,卡片测试1,癫痫好医生,卡片测试1,途家民宿,卡片测试1,卡片测试1,RPK-P,备忘录记事本,皮皮搞笑,RPK-W,成语词典,快看小说,花生优惠券,盏盏户外照明,贝壳铃声,垃圾分类,用毅汽车用品,好一点心理咨询师,RPK-q,合景摩方,百度地图公交版,RPK-t,个人中心-用户卡片,桌面时钟,中央天气预报,名片设计,区块链经验,元贝驾考,体育场馆预订,民间小调视频,泰腾家用电器,万年历,万能计时器,太极拳视频,荟美美容养生,小米快递,悦动圈,QQ阅读,视频彩铃,氧气听书,闺蜜美容院,杰记潮汕牛丸,星宝绘本,前列隙炎保健,搜索一下,demolq,经典诗词,前芳中山美容美发,lq3,口袋故事,吉祥日历万年历,快爽小说,业斌太阳能柱头灯,快应用中心,动态壁纸精灵,好兔视频,ip计算器,lq3,小快问答,图片加画框,兼职猫,随行地铁,轻粒子,Nebula官方商城,马蜂窝旅游,漫看漫画,信用卡超市,爱心筹,奔腾快应用测试,随行停车,dionysus,哗啦小说,网贷黑名单,查违章,猪年运势,加水印相机,lq3,慢慢买,星贝舞蹈培训,lq3,网上车市,百度视频,塔罗今日运势,欧肯涂料商城,计算器高级版,手持弹幕LED,testlwa,魔魔工具箱,豆瓣评分,红豆角,汉语词典,铃声哆来咪,闪鱼回收,电视猫,快应用混合卡片测试,图片转文字识别提取,证件照制作,铃声多酷,新浪健康,喵喵折,铃音多多,百度地图打车,兴业银行,雨乐,丁力青岛美食,周公AI解梦,小米电玩,太平洋汽车网,贷款计算器,星光耀商业广场,小写数字转大写工具,初中课堂视频,做菜大全,起名宝,小说阅读器,蛋壳表情,汽车之家,微博极速版,F8美容美发,垃圾分类助手,冠航家装,成语点点点,阿姨帮,快盯盘,郭德先门业商城,lq3,昌海高平便民服务,查快递,小学互动作业,星座之家,我要卡办卡,水灵子舞蹈形体,周公解梦大全,最美天气,CC阅读,17K小说,名朋小说,东方削面,院线剧情,cross,松鼠记账,十二星座运势,订蛋糕,怕怕,郑州军海癫痫病医院,苏豫拜全屋定制,松木经济开发区,豪源广告标识,航班管家,四季花坊东莞花店,家和中山酒店,大亲家,工资计算器,聚美优品,违晓宝违章查询,码上放心,来电铃声,盛会灯饰配件,易车,非凡宝宝起名,海丽美容瘦身,木鸟短租民宿,189邮箱,赞赞进口商品,东方财富,蚂蚁短租,白菜二手车,二维码便签,水色生物颗粒燃料,颐扬美容养发护理,小睡眠,毒舌电影,红袖读书,汽车报价大全,测试1号,解忧谱家庭教育咨询,天猫优惠券,看了吗,lq3,深宵文学,宜搜小说畅读版,万诚买家电,体积换算计算器,桃桃喜,手机铃声,高铁管家,霈玥商务,头条铃声,旭邦户外亮化,飞常准查航班,天浩杰源太阳能灯,汽车之家查违章,随手记,新浪新闻,多多铃声,赛恩思教育培训,39健康,懂得,房贷计算机,王者荣耀盒子,锦鲤免费小说,优信二手车,爱看手机电视直播,糖豆广场舞视频,乐途免费小说,车轮查违章,言情小说大全,亿邦,一起买买买,铁行火车票,LED显示屏,芒果TV,快优惠,金多多广州女装,麦田亲子绘本故事,毛豆新车,柠乐杂志,平安一账通,便利蜂,蒙学经典,啤酒小说,小爱直播,cpu数据库,网购优惠券,肉加韩国料理,看漫画,小米移动营业厅,白菜二手车,小米云盘,魔魔选择器,越听越聪明,周公解梦,附近家政,运势每天测,交通限行,健康之路,孕婴用品知识,快应用测试101005,lq3,快应用测试101101,饿了么,,景区查询,铃声助手-铃声,找充电宝,极简Todo,快生活,叮当快药,clock1016cn,钛媒体,唯品会,clock1016,博凡中山特色餐饮,星座运势大全,房贷计算器专业版,字典大全,天气高级版,天气通,挂号通,吉命运势大全,腾讯新闻,天猫精选,艺术签名设计,菜鸟裹裹,金狮佛山酒店公寓,常读小说,团队ai虚拟助理,联运测试04,重庆城佳惠,车联车轮胎网,金山文档,唐德祥副食,平安银行贷款,吉吉手机商城,西窗烛,钢琴谱大全i,铁行飞机票,找师傅家居服务,51够花计算器,滴滴出行,手机测网速度,小学二年级,快应用测试111301,室内图,e兼职求职版,算命占卜,快应用测试111401,链书,凤凰新闻,安心找工作网,友读小说,掌阅小说,搞笑视频,作文大全,幸运云,搜狐新闻,欢乐口红机,金山词霸,追书神器免费版,录音笔高清版,重庆火锅,招标搜索引擎,随行优惠,赛思思哆啦AI学,花生头条,芬芬纳米汗蒸,正则表达式工具,好物,大美私享荟,小学一年级,买车宝典,天气便利通,跟我视驾,企鹅掘金,易奇八字,水平仪量尺,民生银行,癫痫治疗全书,西瓜免费小说,连尚WiFi管家,什么值得买,当当";
        String[] appNameArray = appNames.split(",");
        // 创建IK分词器
        Analyzer analyzer = new IKAnalyzer6x();
        IndexWriterConfig icw = new IndexWriterConfig(analyzer);
        icw.setOpenMode(OpenMode.CREATE);
        Directory dir = null;
        IndexWriter inWriter = null;
        try {
            // 索引目录
            Path indexPath = Paths.get("indexdir");
            dir = FSDirectory.open(indexPath);
            inWriter = new IndexWriter(dir, icw);

            FieldType titleType = new FieldType();
            titleType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);
            titleType.setStored(true);
            titleType.setTokenized(true);
            for (String s : appNameArray) {
                Document doc1 = new Document();
				Field field = new Field("appName", s, titleType);
				field.setBoost(10);  //设置field 权重
                doc1.add(field);
                inWriter.addDocument(doc1);
            }
            inWriter.commit();
            inWriter.close();
            dir.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Date end = new Date();
        System.out.println("索引文档用时:" + (end.getTime() - start.getTime()) + " milliseconds");
        System.out.println("**********索引创建完成**********");
    }

	public static void main1(String[] args) {

		// 创建2个News对象
		News news1 = new News();
		news1.setId(1);
		news1.setTitle("安倍晋三本周会晤特朗普 将强调日本对美国益处");
		news1.setContent("日本首相安倍晋三计划2月10日在华盛顿与美国总统特朗普举行会晤时提出加大日本在美国投资的设想");
		news1.setReply(672);
		News news2 = new News();
		news2.setId(2);
		news2.setTitle("北大迎4380名新生 农村学生700多人近年最多");
		news2.setContent("昨天，北京大学迎来4380名来自全国各地及数十个国家的本科新生。其中，农村学生共700余名，为近年最多...");
		news2.setReply(995);

		News news3 = new News();
		news3.setId(3);
		news3.setTitle("特朗普宣誓(Donald Trump)就任美国第45任总统");
		news3.setContent("当地时间1月20日，唐纳德·特朗普在美国国会宣誓就职，正式成为美国第45任总统。");
		news3.setReply(1872);
		// 开始时间

		Date start = new Date();
		System.out.println("**********开始创建索引**********");
		// 创建IK分词器
		Analyzer analyzer = new IKAnalyzer6x();
		IndexWriterConfig icw = new IndexWriterConfig(analyzer);
		icw.setOpenMode(OpenMode.CREATE);
		Directory dir = null;
		IndexWriter inWriter = null;
		// 索引目录
		Path indexPath = Paths.get("indexdir");

		try {
			if (!Files.isReadable(indexPath)) {
				System.out.println("Document directory '" + indexPath.toAbsolutePath()
						+ "' does not exist or is not readable, please check the path");
				System.exit(1);
			}
			dir = FSDirectory.open(indexPath);
			inWriter = new IndexWriter(dir, icw);

            FieldType idType = new FieldType();
			idType.setIndexOptions(IndexOptions.DOCS);
			idType.setStored(true);

			FieldType titleType = new FieldType();
			titleType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);
			titleType.setStored(true);
			titleType.setTokenized(true);

			FieldType contentType = new FieldType();
			contentType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);
			contentType.setStored(true);
			contentType.setTokenized(true);
			contentType.setStoreTermVectors(true);
			contentType.setStoreTermVectorPositions(true);
			contentType.setStoreTermVectorOffsets(true);

			Document doc1 = new Document();
			doc1.add(new Field("id", String.valueOf(news1.getId()), idType));
			doc1.add(new Field("title", news1.getTitle(), titleType));
			doc1.add(new Field("content", news1.getContent(), contentType));
			doc1.add(new IntPoint("reply", news1.getReply()));
			doc1.add(new StoredField("reply_display", news1.getReply()));
			
			Document doc2 = new Document();
			doc2.add(new Field("id", String.valueOf(news2.getId()), idType));
			doc2.add(new Field("title", news2.getTitle(), titleType));
			doc2.add(new Field("content", news2.getContent(), contentType));
			doc2.add(new IntPoint("reply", news2.getReply()));
			doc2.add(new StoredField("reply_display", news2.getReply()));

			Document doc3 = new Document();
			doc3.add(new Field("id", String.valueOf(news3.getId()), idType));
			doc3.add(new Field("title", news3.getTitle(), titleType));
			doc3.add(new Field("content", news3.getContent(), contentType));
			doc3.add(new IntPoint("reply", news3.getReply()));
			doc3.add(new StoredField("reply_display", news3.getReply()));

			inWriter.addDocument(doc1);
			inWriter.addDocument(doc2);
			inWriter.addDocument(doc3);

			inWriter.commit();

			inWriter.close();
			dir.close();

		} catch (IOException e) {
			e.printStackTrace();
		}
		Date end = new Date();
		System.out.println("索引文档用时:" + (end.getTime() - start.getTime()) + " milliseconds");
		System.out.println("**********索引创建完成**********");
	}
}
